This invention relates to mediating among media applications on a device, to determine which application should be playing.
In a device capable of a plurality of different media applications, it frequently is the case that only one media application can be played back to the user at any one time. A media application may be defined as any application that causes media to be played, even if only incidentally. Thus, in a multifunction device that may include, for example, at least a mobile telephone, an audio (e.g., music) player, a video player, a calendar application, and an Internet/World Wide Web browser (with, e.g., a wireless broadband connection), there may be several audio applications—e.g., the telephone ringtone generator, the music player, the alarm/reminder tone generator of the calendar application, and the browser (which may invoke its own audio playback session)—that can play audio, just as there may be more than one application—e.g., the video player and the browser (which may invoke its own video playback session)—that can play video. Typically, only one audio playback and/or one video playback can occur at any one time, particularly in a device with limited processing capability such as a handheld device. Therefore, a way is required to determine which application, among competing applications that all want to play, can play.
The problem may be further complicated when one application is already playing and another application wants to begin playing. This, in fact, is more likely the situation, as it is unlikely that multiple applications will both want to begin playing at precisely the same time. For example, in the multifunction device described above, the user may have initiated playback of a music file, and while the music is playing, an incoming telephone call necessitates playback of a ringtone. Whether and when, in fact, the second application can interrupt the first application may be decided based on predetermined priorities. In addition, when a first application is interrupted by a second application, a decision must be made regarding resumption, or not, of the first application upon termination of the second application. A predetermined set of rules may determine when an application is resumed and when it is not.
One known solution to this problem is for every application to “know” about the existence of every other application and when another application wants to play, and for the applications to decide among themselves, based on a predetermined matrix of (a) priorities and (b) rules for resumption, which application can interrupt another and whether the interrupted application will resume. However, such a solution requires complex programming of every application, as well as reprogramming of existing applications when a new application is added. In addition, it requires that each application be kept advised of the status of each other application.
It would be desirable to be able to mediate among various media applications in a device without each application having to be aware of, and having to take into account, each other application.